package cn.lx.expansion;

/**
 * @author lixin
 * @Classname AbstractClass
 * @Description TODO
 * @Date 2019/10/5 上午9:13
 */
public abstract class AbstractClass {
    // 基本方法
    protected abstract void doSomething();

    // 基本方法
    protected abstract void doAnything();

    // 基本方法
    protected abstract void method1();

    protected void templateMethod() {
        // 调用基本方法，完成相关逻辑
        this.doSomething();
        this.doAnything();
        if (this.isAlarm()) {
            this.method1();
        }
    }

    // 钩子方法
    protected boolean isAlarm() {
        return true;
    }

}
